﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Account_Register : System.Web.UI.Page
{

    protected void Page_Load(object sender, EventArgs e)
    {
        //RegisterUser.ContinueDestinationPageUrl = Request.QueryString["ReturnUrl"];
    }

    protected void RegisterUser_CreatedUser(object sender, EventArgs e)
    {
        //FormsAuthentication.SetAuthCookie(RegisterUser.UserName, false /* createPersistentCookie */);

        //string continueUrl = RegisterUser.ContinueDestinationPageUrl;
        //if (String.IsNullOrEmpty(continueUrl))
        //{
        //    continueUrl = "~/";
        //}
        //Response.Redirect(continueUrl);
    }

    private void limpiarCammpos()
    {
        txtNit.Text = "";
        Email.Text = "";
        Password.Text = "";
        ConfirmPassword.Text = "";
    }
    protected void CreateUserButton_Click(object sender, EventArgs e)
    {
        ErrorMessage.Text = "";
        DataClasses.DataClassesProyectosDataContext
            contexto = new DataClasses.DataClassesProyectosDataContext();
        try
        {

            bool boolBanderaProponenteNuevo = true;
            //bool boolBanderaProponente = false;

            //SI EL CORREO ELECTRONICO Y EL NIT NO EXISTEN EN EL SISTEMA PERMITE REGISTRAR UNO NUEVO
            var datosAppProponenteNuevo = (from a in contexto.APP_PROPONENTEs
                                      where a.PRO_NIT == txtNit.Text ||  a.PRO_CORREO_ELECTRONICO_REPRESENTANTE_LEGAL == Email.Text 
                                      select a
                                );

            foreach (var v in datosAppProponenteNuevo)
            {
                boolBanderaProponenteNuevo = false;   
            }
            
            if(!boolBanderaProponenteNuevo)
            {
                //VERIFICAR SI EL  NIT Y EL COREO ELECTRONICO HACEN JUEGO EN LA TABLA APP_PROPONENTES Y EL USUARIO ES NULL
                var datosAppProponente = (from a in contexto.APP_PROPONENTEs
                                          where a.PRO_NIT == txtNit.Text && a.PRO_CORREO_ELECTRONICO_REPRESENTANTE_LEGAL == Email.Text && object.Equals(a.USU_ID, null)
                                          select a
                                    );
                foreach (var v in datosAppProponente)
                {

                    boolBanderaProponenteNuevo = true;
                
                }
            }


            if (boolBanderaProponenteNuevo)
            {
                #region Valida Datos usuario
                // VERIFICAR SI EL USUARIO EXISTE 
                var datos = (from a in contexto.ADM_USUARIOs
                             where a.USU_NOMBRE == Email.Text || a.USU_CORREO_ELECTRONICO == Email.Text
                             select a
                                    );
                bool boolBandera = true;
                foreach (var v in datos)
                {

                    boolBandera = false;
                    ErrorMessage.Text = "El correo electrónico: " + Email.Text + " ya se encuentra registrado, utilice un correo diferente para crear su cuenta gracias";
                }

                //VERIFICAR SI EL  CORREO ELECTRONICO EXISTE
                var datosCorreoElectronico = (from a in contexto.ADM_USUARIOs
                                              where a.USU_CORREO_ELECTRONICO == Email.Text
                                              select a
                                    );
                foreach (var v in datosCorreoElectronico)
                {

                    boolBandera = false;
                    ErrorMessage.Text = "El correo electrónico: " + Email.Text + " ya se encuentra registrado, utilice un correo diferente para crear su cuenta gracias";
                }

                //VERIFICAR SI EL  NIT YA SE ENCUENTRA REGISTRADO
                var datosNit = (from a in contexto.ADM_USUARIOs
                                where a.USU_NIT == txtNit.Text
                                select a
                                    );
                foreach (var v in datosNit)
                {

                    boolBandera = false;
                    ErrorMessage.Text = "El NIT: " + txtNit.Text + " ya se encuentra registrado, utilice un NIT diferente para crear su cuenta gracias";
                }




                //VERIFICAR SI EL NIT EXISTE

                if (boolBandera)
                {
                    #region ADICIONAR USUARIOS
                    //////////////////////////////////////////////
                    //                                          //
                    //             ADM_USUARIOS                 //
                    //                                          //
                    //////////////////////////////////////////////
                    DataClasses.ADM_USUARIO objAdmUsuario = new DataClasses.ADM_USUARIO();

                    objAdmUsuario.USU_NIT = txtNit.Text;
                    objAdmUsuario.USU_TIPO = Convert.ToChar("P");
                    objAdmUsuario.USU_USUARIO = Email.Text;
                    objAdmUsuario.USU_CORREO_ELECTRONICO = Email.Text;
                    objAdmUsuario.USU_ADMINISTRADOR = Convert.ToChar("N");
                    objAdmUsuario.USU_DIAS_EXPIRACION = 365;
                    DataClasses.FE_Symmetric objSymetric = new DataClasses.FE_Symmetric();
                    string strClaveEncriptada = objSymetric.EncryptData("098#7UI#OPPDFG", Password.Text);
                    objAdmUsuario.USU_CLAVE = strClaveEncriptada;
                    objAdmUsuario.USU_ESTADO = Convert.ToChar("A");
                    contexto.ADM_USUARIOs.InsertOnSubmit(objAdmUsuario);
                    contexto.SubmitChanges();
                    Session["USU_NIT"] = txtNit.Text;
                    Session["USU_ID"] = objAdmUsuario.USU_ID;
                    Session["USU_CORREO_ELECTRONICO"] = objAdmUsuario.USU_CORREO_ELECTRONICO;
                    //SI EXISTE EL NIT DENTRO DE LA TABLA APP_PROPONETES, CORRESPONDE AL CORREO REGISTRADO CONE STE NIT Y EL USU ES NULL LO ASOCIA A LOS DATOS DEL PROPONENTE
                    var datosAppProponentes = (from a in contexto.APP_PROPONENTEs
                                               where a.PRO_NIT == txtNit.Text && a.PRO_CORREO_ELECTRONICO_REPRESENTANTE_LEGAL == Email.Text && object.Equals(a.USU_ID, null)
                                               select a
                                    );

                    foreach (var v in datosAppProponentes)
                    {
                        v.USU_ID = objAdmUsuario.USU_ID;
                    }

                    contexto.SubmitChanges();

                    //limpiarCammpos();
                    //ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_error2", "alert('Su cuenta se creo exitosamente y se activara tan pronto un usuario administrador valide la información');", true);
                    FormsAuthentication.SetAuthCookie(Email.Text, false);
                    Response.Redirect("admin/VerificarNit.aspx");

                    #endregion
                }
                #endregion

            }
            else
                //ErrorMessage.Text = "Su registro no se puede completar por favor comuníquese con el Ministerio de Cultura,  para verificar la propiedad de información correspondiente al siguiente NIT: "+txtNit.Text  ;
                ErrorMessage.Text = "El NIT y el correo electrónico ingresados no corresponden  con los registrados en la base de datos para su entidad. Por favor comuníquese con el Programa Nacional de Concertación a los Teléfonos (+1) 3424100 Extensiones: 1373 - 1371 -1374 - 1372 o al correo concertacion@mincultura.gov.co, para la asignación de la contraseña.";

            // ENVIAR UN CORREO ELECTRONICO INFORMANDO SOBRE EL REGISTRO DE EL NUEVO USUARIO
        }
        catch (Exception ex)
        {
            ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_error", "alert('" + ex.Message.ToString() + "');", true);
        }
        

    }
}
